package org.s3.project.mapper;

import com.baomidou.mybatisplus.core.mapper.BaseMapper;
import org.apache.ibatis.annotations.*;
import org.s3.project.common.R;
import org.s3.project.entity.User;
import org.springframework.stereotype.Repository;

import java.time.LocalDateTime;
import java.util.List;

/**
 * @author cfx
 * @version 1.0
 * @Description
 * @date 2025/2/9 9:48
 */
@Mapper
@Repository
public interface UserMapper extends BaseMapper<User> {
    //用户登录
    @Select("select * from user where username = #{username} and password = #{password}")
    User login(@Param("username") String username, @Param("password") String password);
    /**
     * 删除用户
     * @param id 用户id
     * @return 删除结果
     */
    @Delete("delete from user where id = #{id}")
    int deleteUser(@Param("id") int id);

    /**
     * 修改用户信息
     * @param user 用户对象
     * @return 修改结果
     */
    @Update("update user set update_user=#{update_user}, name = #{name}, username = #{username}, phone = #{phone},sex = #{sex},id_number = #{id_number},update_time=#{update_time},avatar=#{avatar}  where id = #{id}")
    int updateUser(User user);

    /**
     * 修改用户状态
     * @param user 用户对象
     * @return 修改结果
     */
    @Update("update user set status = #{status},update_user=#{update_user},update_time=#{update_time} where id = #{id}")
    int updateUserStatus(User user);

    /**
     * 批量删除用户
     * @param ids 用户id数组
     * @return 删除结果
     */
    int deleteUsers(int[] ids);

    /**
     * 用户模糊查询
     * @param name 用户名称
     * @param create_time 创建时间
     * @param create_timeOne 创建时间1
     * @return 查询结果
     */
    List<User> selectUserLike(@Param("name") String name, @Param("create_time")String create_time, @Param("create_timeOne")String create_timeOne);

    /**
     * 添加用户
     * @param user 用户对象
     * @return 添加结果
     */
    int addUser(User user);

    //根据用户id查询用户信息
    @Select("select id,name,phone,sex,id_number,avatar from user where id = #{id}")
    User selectUserById(@Param("id") int id);

    //修改用户数据库头像并上传到阿里云
    @Update("update user set avatar = #{avatar} where id = #{id}")
    int updateUserAvatar(@Param("avatar") String avatar,@Param("id") Integer id);

}
